1 module unde.tick; 2 3 import unde.global_state; 4 import unde.lib; 5 6 import unde.keybar.lib; 7 8 import derelict.sdl2.sdl; 9 10 import std.stdio; 11 import std.datetime; 12 13 enum EventHandlerResult 14 { 15 Pass, 16 Block 17 } 18 19 enum unDE_MouseButtons { 20 Left = 0x01, 21 Middle = 0x02, 22 Right = 0x04, 23 } 24 25 void make_tick(GlobalState gs) 26 { 27 gs.games.dizzy_omega.tick(gs); 28 } 29 30 void 31 process_event(GlobalState gs, SDL_Event event) 32 { 33 if (event.type == SDL_WINDOWEVENT) 34 { 35 switch (event.window.event) { 36 case SDL_WINDOWEVENT_SHOWN: 37 case SDL_WINDOWEVENT_EXPOSED: 38 case SDL_WINDOWEVENT_RESTORED: 39 gs.window_shown = true; 40 gs.games.dizzy_omega.reinit_draw = 2; 41 break; 42 case SDL_WINDOWEVENT_HIDDEN: 43 case SDL_WINDOWEVENT_MINIMIZED: 44 case SDL_WINDOWEVENT_FOCUS_LOST: 45 gs.window_shown = false; 46 break; 47 default: 48 break; 49 } 50 return; 51 } 52 53 gs.games.dizzy_omega.process_event(gs, event); 54 } 55 56 void process_events(GlobalState gs) 57 { 58 /* Our SDL event placeholder. */ 59 SDL_Event event; 60 SDL_Event prev_event; 61 62 /* Grab all the events off the queue. */ 63 while( SDL_PollEvent( &event ) ) 64 { 65 KeyHandler *keyhandler; 66 if (event.type == SDL_KEYDOWN) 67 { 68 keyhandler = event.key.keysym.scancode in gs.keybar.handlers_down; 69 if (keyhandler) 70 { 71 keyhandler.handle(gs); 72 } 73 } 74 else if (event.type == SDL_KEYUP) 75 { 76 keyhandler = event.key.keysym.scancode in gs.keybar.handlers; 77 if (keyhandler) 78 keyhandler.handle(gs); 79 } 80 81 if (keyhandler is null) 82 { 83 process_event(gs, event); 84 } 85 86 prev_event = event; 87 } 88 } 89 90 void 91 make_screenshot(GlobalState gs) { 92 SDL_Surface *screenshot; 93 screenshot = SDL_CreateRGBSurface(SDL_SWSURFACE, 94 gs.screen.w+32*6, 95 gs.screen.h, 96 32, 0x00FF0000, 0X0000FF00, 0X000000FF, 0XFF000000); 97 SDL_RenderReadPixels(gs.renderer, null, SDL_PIXELFORMAT_ARGB8888, 98 screenshot.pixels, screenshot.pitch); 99 SDL_SaveBMP(screenshot, "screenshot.bmp"); 100 SDL_FreeSurface(screenshot); 101 } 102